iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
5
Software Development

活用python- 路遙知碼力,日久練成精系列 第 1

Day1- 前言: python簡潔之「路遙知碼力,日久練成精」

  • 分享至 

  • xImage
  •  

路遙知碼力,日久練成精- 只要在程式之路鑽研的夠深,便能夠充分發揮程式碼的力量; 練習的日子夠久,便能夠練成寫出精簡代碼的能力。

大家好,我是心原一馬,內心原來一心喜歡打程式碼。

教學理念及目標?

本系列文不只是講解高級語法的教科書叫大家背誦,
亦會帶出解決問題的思維,如何換種思考方式,
使得複雜問題簡單化,
也希望讓讀者有「哦,原來這個問題還能這樣解。」的豁然開朗吧。
若您是其它語言的讀者,說不定也會因為見識到python語法的精簡,
而萌生「那我也來試著專精python看看好了」的念頭呢。

「路遙知碼力,日久練成精」這系列的文章向大家介紹如何寫出一手漂亮的python代碼,
使得程式碼行數少又不失可讀性

我的python老師說很多人第一個語言不是學python,
把寫其它語言的習慣帶進python中了。

例如我們如果想要宣告一個初始值為1~100的陣列(array),
如果你學過C語言,你可能會這樣寫,
先宣告一個大小為100的陣列,
初始值設為0,再用for 迴圈去改它的值,如下:

int main()
{
    int arr[100]={0};
    int idx=0;
    for(idx=0; idx<100;idx++){
        arr[idx]=idx+1;
    }
}

如果你學過C++,你可能會先宣告一個空的vector,
再用for迴圈把1~100的數字依序加進去,如下:

int main()
{
    vector<int> v;
    for(int i=1; i<=100;i++){
        v.push_back(i);
    }
}

於是當你學了python之後,
知道python的list是類似C語言的array,
類似C++的vector時,
你很容易這樣去寫code:

L=[]
for i in range(1,101):
    L.append(i) 

看似好像就只是不必寫C語言的main()函數而已嘛,
好像也沒精簡到哪裡去。

但其實我們有以下優雅的寫法 (後面篇章會再詳談這是什麼東西):

L = [i for i in range(1,101)]

一行解決,看起來是不是漂亮多了?
在python語言中,
因為有很有好用的內建函數及一些精簡的語法,
使得在其它語言中需要寫很多行的程式,
到了python往往都是一行解決的事情。

試想,如果我們想要「把x的值連加8次」,
用for迴圈來寫當然也是可以做的,如下:

x= 100
result = 0
for i in range(8):
    result = result + x 

可是其實「把x的值連加8次」可以簡單用「x乘以8」來表達,邏輯就可以精簡成這樣:

result = 8*x

這樣程式是不是簡單多了?

需注意本系列文談的程式碼精簡同時會兼顧程式的可讀性,
未必字打的愈少程式就愈精簡,
例如把變數名稱命名為a,b,c,d,… ,
這樣無法從變數名字看出涵義,
並不在需要精簡的範圍內。

邀請大家一起學習

當然,要把python程式寫到精簡又好懂也並不是能夠一步登天就可以學成的,
故本系列文命名為「路遙知碼力,日久練成精」,
想用短短程式碼實現豐富的功能?
想學將問題化繁為簡的思維模式嗎?
想試試看python與其它語言與眾不同的地方?
歡迎一同踏向探索python之路吧。


下一篇
Day2 – 來學習基礎python特性吧
系列文
活用python- 路遙知碼力,日久練成精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言